﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BiliBiliCSharpStudy.old {
    /**
     * === 快捷键 ===
     * prop tab tab : 快速编写“属性”          (简写)
     * propfull tab tab : 快速编写“属性”      (完整)
     * ctrl + r, ctrl + e : 也可以快速的生成“属性”代码；编辑 -> 重构 -> 封装字段
     * 
     */
    class PropertyDemo {
        public static void demo() {
            test1();
        }

        public static void test1() {
            try {
                Student6 stu1 = new Student6();
                stu1.Age = 20;
                Student6 stu2 = new Student6();
                stu2.Age = 20;
                Student6 stu3 = new Student6();
                stu3.Age = 20;
                int avgAge = (stu1.Age + stu2.Age + stu3.Age) / 3;
                Console.WriteLine(avgAge);
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }

    class Student6 {
        /**
         * === 快捷键 ===
         * prop tab tab : 快速编写“属性”          (简写)
         * propfull tab tab : 快速编写“属性”      (完整)
         * ctrl + r, ctrl + e : 也可以快速的生成“属性”代码；编辑 -> 重构 -> 封装字段
         * 
         */
        private int age;
        public int Age {
            get {
                return age;
            }
            set {
                // `value`在这里是上下文关键字; 颜色高亮“蓝色”; 
                if (value > 0 && value <= 120) {
                    age = value;
                } else {
                    throw new Exception("Age value has error.");
                }
            }
        }

        // 动态计算值的属性
        // 类似 vue 中的 computed
        public bool CanWork {
            get {
                if (age >= 16) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    }
}
